package com.gxa.xiaoucomeshome.service;

import com.gxa.xiaoucomeshome.exception.BusinessException;
import com.gxa.xiaoucomeshome.pojo.OrderExport;
import com.gxa.xiaoucomeshome.pojo.OrderLog;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @program: IntelliJ IDEA
 * @description:
 * @author: Mr.Wang
 * @create: 2022-06-07 18:57
 **/
public interface ManagerService {

    /**
     * 登录
     * @param phone 电话
     * @param pwd   密码
     * @throws BusinessException 业务异常
     */
    void login(String phone, String pwd) throws BusinessException;

    /**
     * 查询未审核订单数
     * @return {@code Integer}
     */
    Integer checkOrders();

    /**
     * 统计未分配配送员订单
     * @return {@code Integer}
     */
    Integer countOrders();

    /**
     * upadate
     *
     * @param newPwd 新pwd
     * @param phone  电话
     * @param pwd    松材线虫病
     * @throws BusinessException 业务异常
     */
    void upadate(String newPwd, String phone, String pwd) throws BusinessException;


    /**
     * 添加材料
     * @param materialNumber 材料号
     * @param materialPrice  材料价格
     * @param materialName   材料名称
     */
    void addMaterial(Integer materialNumber, Double materialPrice, String materialName);

    /**
     * 选择调度表
     * @param page 页面
     * @return {@code Map<String, Object>}
     */
    Map<String, Object> selectDispatchList(Integer page);

    /**
     * 选择这样调度表
     * 模糊查询
     * @param str  str
     * @param from 从
     * @param to   来
     * @param page 页面
     * @return {@code Map<String, Object>}
     */
    Map<String, Object> selectLikeDispatchList(Integer page,String str,String from,String to);

    /**
     * 选择快递列表
     * @param courier 快递
     * @return {@code Map<String, Object>}
     */
    Map<String ,Object> selectCourierList(String courier);

    /**
     * 选择快递
     * @param courierPhone 快递电话
     * @param logids       logids
     */
    void chooseCourier(String courierPhone,String... logids);

    /**
     * 设置状态
     *
     * @param logid logids
     */
    void setState(String logid);

    /**
     * 选择检查表
     *
     * @param page 页面
     * @param size 大小
     * @return {@code List<Map<String, Object>>}
     */
    List<Map<String, Object>> selectCheckList(Integer page, Integer size);

    /**
     * 添加条形码
     *
     * @param orderId 订单id
     * @param number  数量
     * @param batch   批处理
     * @param date    日期
     */
    void addBarcode(String orderId, String number, String batch, Date date);


    /**
     * 添加订单日志
     *
     * @param orderLog log
     * @return {@code Integer}
     */
    Integer addOrderLog(OrderLog orderLog);

    /**
     * 选择所有材料名称
     *
     * @return {@code String[]}
     */
    String[] selectAllMaterialsName();

    /**
     * 选择所有材料
     *
     * @param page 页面
     * @param size 大小
     * @return {@code List<Map<String, Object>>}
     */
    List<Map<String, Object>> selectAllMaterials(Integer page, Integer size);

    /**
     * 搜索材料
     *
     * @param materialName 材料名称
     * @param page         页面
     * @param size         大小
     * @return {@code List<Map<String, Object>>}
     */
    List<Map<String, Object>> searchMaterials(String materialName,Integer page, Integer size);

    /**
     * 删除材料
     *
     * @param materialName 材料名称
     */
    void deleteMaterial(String []materialName);

    /**
     * 平台调度
     * @param orderId 订单id
     */
    void platformDispatch(String orderId);

    /**
     * 交货细节
     * @param orderId 订单id
     * @return {@code Map<String, Object>}
     */
    Map<String,Object> deliveryDetails(String orderId);

    /**
     * 设置发货清单
     * @param offset       抵消
     * @param keywords     关键字
     * @param from         从
     * @param to           来
     * @param state       州
     * @param receipt      收据
     * @param agingProduct 老化产品
     * @return {@code Map<String, Object>}
     */
    Map<String ,Object> setShippingList(Integer offset,String keywords,String from,String to,Integer state,
                                        String receipt,String agingProduct);

    /**
     * 设置评论
     * @param remark  备注
     * @param orderId 订单id
     */
    void setRemark(String remark,String orderId);

    /**
     * 删除订单id
     * @param orderId 订单id
     */
    void deleteOrderId(String orderId);

    /**
     * 交货时间
     *
     * @param orderId 订单id
     */
    void setDeliveryTime(String orderId);

    /**
     * 选择详细信息
     * @param orderId 订单id
     * @return {@code Map<String, Object>}
     */
    Map<String ,String> selectDetails(String orderId);

    /**
     * 出口订单id
     * @param orderId 订单id
     * @return {@code OrderExport}
     */
    OrderExport orderIdExport(String orderId);

    /**
     * 删除检查表
     * 根据订单号删除待审核订单
     *
     * @param orderIds 订单id
     */
    void deleteCheckList(String[] orderIds);

    /**
     * serach像检查表
     * 模糊查询待审核订单列表
     *
     * @param offset 抵消
     * @param str    str
     * @param state  状态
     * @param from   从
     * @param to     来
     * @return {@code List<Map<String, Object>>}
     */
    List<Map<String, Object>> serachLikeCheckList(
            Integer offset,String str, Integer state,String from, String to);

    /**
     * 状态改变
     * 改变订单状态
     *
     * @param state   状态
     * @param orderId 订单id
     */
    void stateChange(Integer state,String orderId);

    /**
     * 添加材料使用
     * 添加物流订单物料消耗
     *
     * @param logId 日志id
     * @param name  名字
     * @param type  类型
     * @param num   全国矿工工会
     */
    void addMaterialUse(String logId,String name,String type,Integer num);
}
